 /*!
  * Buttons helper for fancyBox
  * version: 1.0.5 (Mon, 15 Oct 2012)
  * @requires fancyBox v2.0 or later
  *
  * Usage:
  * $(".fancybox").fancybox({
  * helpers : {
  * buttons: {
  * position : 'top'
  * }
  * }
  * });
  *
  */
 (function ($) {
     //Shortcut for fancyBox object
     var F = $.fancybox;
     //Add helper object
     F.helpers.buttons = {
         defaults: {
             skipSingle: false, // disables if gallery contains single image
             position: 'top', // 'top' or 'bottom'
             tpl: '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:;"></a></li></ul></div>'
         },
         list: null,
         buttons: null,
         beforeLoad: function (opts, obj) {
             //Remove self if gallery do not have at least two items
             if (opts.skipSingle && obj.group.length < 2) {
                 obj.helpers.buttons = false;
                 obj.closeBtn = true;
                 return;
             }
             //Increase top margin to give space for buttons
             obj.margin[opts.position === 'bottom' ? 2 : 0] += 30;
         },
         onPlayStart: function () {
             if (this.buttons) {
                 this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn');
             }
         },
         onPlayEnd: function () {
             if (this.buttons) {
                 this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn');
             }
         },
         afterShow: function (opts, obj) {
             var buttons = this.buttons;
             if (!buttons) {
                 this.list = $(opts.tpl).addClass(opts.position).appendTo('body');
                 buttons = {
                     prev: this.list.find('.btnPrev').click(F.prev),
                     next: this.list.find('.btnNext').click(F.next),
                     play: this.list.find('.btnPlay').click(F.play),
                     toggle: this.list.find('.btnToggle').click(F.toggle),
                     close: this.list.find('.btnClose').click(F.close)
                 }
             }
             //Prev
             if (obj.index > 0 || obj.loop) {
                 buttons.prev.removeClass('btnDisabled');
             } else {
                 buttons.prev.addClass('btnDisabled');
             }
             //Next / Play
             if (obj.loop || obj.index < obj.group.length - 1) {
                 buttons.next.removeClass('btnDisabled');
                 buttons.play.removeClass('btnDisabled');
             } else {
                 buttons.next.addClass('btnDisabled');
                 buttons.play.addClass('btnDisabled');
             }
             this.buttons = buttons;
             this.onUpdate(opts, obj);
         },
         onUpdate: function (opts, obj) {
             var toggle;
             if (!this.buttons) {
                 return;
             }
             toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn');
             //Size toggle button
             if (obj.canShrink) {
                 toggle.addClass('btnToggleOn');
             } else if (!obj.canExpand) {
                 toggle.addClass('btnDisabled');
             }
         },
         beforeClose: function () {
             if (this.list) {
                 this.list.remove();
             }
             this.list = null;
             this.buttons = null;
         }
     };
 }(jQuery));